package com.example.javademo.Utils;


import io.jsonwebtoken.*;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.Jwt;
import io.jsonwebtoken.security.Keys;

import javax.crypto.SecretKey;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;

public class JwtUtils {
    private static final String SECRET = "&/2yf5!6@$$&/2yf5!6@$$&/2yf5!6@$$";  // 给token加密的秘钥

    public static String createToken( Map<String, Object> claims) {
        // 1. 将 SECRET 转换成 Key 对象（更安全）
        SecretKey key = Keys.hmacShaKeyFor(SECRET.getBytes());
        // 3. 构建 JWT
        return Jwts.builder()
                .claims(claims)           // 一次性设置所有 Claims
                .issuedAt(new Date())    // 签发时间（iat）
                .expiration(new Date(System.currentTimeMillis() + 24 * 60 * 60 * 1000)) // 过期时间（exp）
                .signWith(key)            // 签名（自动选择算法，如 HS256）
                .compact();
    }

    public static Map<String, Object> parseToken(String token) {
        try {
            // 1. 将 SECRET 转换成 Key 对象
            SecretKey key = Keys.hmacShaKeyFor(SECRET.getBytes());
            // 2. 解析 JWT
            Jws<Claims> jws = Jwts.parser()
                    .verifyWith(key)  // 设置签名密钥
                    .build()          // 构建解析器
                    .parseSignedClaims(token); // 解析并验证签名

            // 3. 获取 Payload（即原来的 Body）
            return jws.getPayload();
        } catch (JwtException e) {
            System.out.println(e.getMessage()+"msg");
            throw new RuntimeException("Invalid JWT token", e);
        }
    }
}
